// 小程序兼容性工具

// 检测是否在小程序环境中
export function isInMiniProgram() {
  return window.__wxjs_environment === 'miniprogram'
}

// 向小程序发送消息
export function sendMessageToMiniProgram(data) {
  if (isInMiniProgram() && window.wx && window.wx.miniProgram) {
    window.wx.miniProgram.postMessage({
      data: data
    })
  }
}

// 从 hash 中解析查询参数
function parseHashQuery() {
  const hash = window.location.hash || '' // 形如 #/ac?device=xx&mac=yy
  const idx = hash.indexOf('?')
  if (idx === -1) return {}
  const queryString = hash.substring(idx + 1)
  const params = new URLSearchParams(queryString)
  const result = {}
  for (const [k, v] of params.entries()) result[k] = v
  return result
}

// 请求返回上一页
export function goBack() {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'back'
    })
  } else {
    // 普通H5环境，使用浏览器返回
    window.history.back()
  }
}

// 请求分享
export function requestShare(shareData = {}) {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'share',
      data: shareData
    })
  } else {
    // 普通H5环境，使用原生分享API
    if (navigator.share) {
      navigator.share(shareData)
    }
  }
}

// 请求登录
export function requestLogin() {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'login'
    })
  } else {
    // 普通H5环境，使用其他登录方式
    console.log('H5环境登录')
  }
}

// 获取小程序传递的参数（兼容 hash 路由与 search）
export function getMiniProgramParams() {
  if (isInMiniProgram()) {
    // 优先从 hash 查询参数获取（如 #/ac?device=xx&mac=yy）
    const hashParams = parseHashQuery()
    if (Object.keys(hashParams).length > 0) {
      return hashParams
    }
    // 回退到 search 查询参数
    const urlParams = new URLSearchParams(window.location.search)
    return {
      device: urlParams.get('device'),
      mac: urlParams.get('mac'),
      page: urlParams.get('page')
    }
  }
  return {}
}

// 设置页面标题
export function setPageTitle(title) {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'setTitle',
      data: { title }
    })
  } else {
    document.title = title
  }
}

// 显示加载提示
export function showLoading(title = '加载中...') {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'showLoading',
      data: { title }
    })
  } else {
    // H5环境可以使用自定义loading组件
    console.log('显示加载提示:', title)
  }
}

// 隐藏加载提示
export function hideLoading() {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'hideLoading'
    })
  } else {
    console.log('隐藏加载提示')
  }
}

// 显示提示信息
export function showToast(title, icon = 'none') {
  if (isInMiniProgram()) {
    sendMessageToMiniProgram({
      type: 'showToast',
      data: { title, icon }
    })
  } else {
    // H5环境可以使用自定义toast组件
    alert(title)
  }
} 